import { get, post } from "@/api/request";

/**
 * 考勤项目组成员表 控制器 / 考勤项目组成员表 控制器添加考勤项目组成员表
 * @param {object} data
 * @param {number} [data.deptId] 部门ID
 * @param {string} [data.joinTime] 加入时间
 * @param {number} [data.leadUserId] 班组长用户ID
 * @param {number} [data.userId] 用户ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<AttendanceProjectUserVO页面展示实体>}
 */
export function attendanceProjectUserAdd(data, config) {
  return post("/attendanceProjectUser/add", data, config);
}

/**
 * 考勤项目组成员表 控制器 / 考勤项目组成员表 控制器删除考勤项目组成员表
 * @param {object} params
 * @param {string} params.id 考勤项目组成员表ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<AttendanceProjectUserVO页面展示实体>}
 */
export function attendanceProjectUserDelete(params, config) {
  return get("/attendanceProjectUser/delete", params, config);
}

/**
 * 考勤项目组成员表 控制器 / 考勤项目组成员表 控制器查询考勤项目组成员表详情
 * @param {object} params
 * @param {number} params.id 考勤项目组成员表ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<AttendanceProjectUserDetailVO页面展示实体>}
 */
export function attendanceProjectUserDetail(params, config) {
  return get("/attendanceProjectUser/detail", params, config);
}

/**
 * 考勤项目组成员表 控制器 / 考勤项目组成员表 控制器分页查询考勤项目组成员表
 * @param {object} data
 * @param {number} [data.deptId] 部门ID
 * @param {number} [data.length] 分页大小
 * @param {number} [data.orderAsc] 排序方向
 * @param {string} [data.orderColum] 排序字段
 * @param {number} [data.pageIndex] 分页下标
 * @param {number} [data.start] 查询记录起始下标
 * @param {array<number>} [data.userId] 用户姓名(前端不用传这个,后端使用的)
 * @param {string} [data.userName] 用户姓名
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<分页返回实体<AttendanceProjectUserVO页面展示实体>>}
 */
export function attendanceProjectUserList(data, config) {
  return post("/attendanceProjectUser/list", data, config);
}

/**
 * 考勤项目组成员表 控制器 / 考勤项目组成员表 控制器更新考勤项目组成员表
 * @param {object} data
 * @param {number} [data.deptId] 部门ID
 * @param {number} [data.id] 主键ID
 * @param {string} [data.joinTime] 加入时间
 * @param {number} [data.leadUserId] 班组长用户ID
 * @param {number} [data.userId] 用户ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<AttendanceProjectUserVO页面展示实体>}
 */
export function attendanceProjectUserUpdate(data, config) {
  return post("/attendanceProjectUser/update", data, config);
}

/**
 * @template T
 * @typedef {Object} 分页返回实体
 * @property {T[]} content - 内容
 * @property {number} elementsNo
 * @property {number} limit
 * @property {number} number
 * @property {number} totalElements
 * @property {number} totalPages
 * @description 分页返回实体
 */

/**
 * @typedef {object} AttendanceProjectUserDetailVO页面展示实体 考勤项目组成员表页面展示实体
 * @property {boolean} canDelete 是否拥有删除权限
 * @property {boolean} canEdit 是否拥有编辑权限
 * @property {string} createTime 编制人时间
 * @property {string} createUser 编制人账号
 * @property {string} createUserDeptName 编制人部门
 * @property {string} createUserRealName 编制人真实姓名
 * @property {number} deptId 部门ID
 * @property {string} deptName 所属部门
 * @property {number} id 主键ID
 * @property {string} joinTime 加入时间
 * @property {string} leadRealName 班组长
 * @property {number} leadUserId 班组长用户ID
 * @property {string} realName 用户姓名
 * @property {number} userId 用户ID
 * @property {string} userName 用户账号
 * @description 考勤项目组成员表页面展示实体
 */

/**
 * @typedef {object} AttendanceProjectUserVO页面展示实体 考勤项目组成员表页面展示实体
 * @property {boolean} canDelete 是否拥有删除权限
 * @property {boolean} canEdit 是否拥有编辑权限
 * @property {string} createTime 编制人时间
 * @property {string} createUser 编制人账号
 * @property {string} createUserDeptName 编制人部门
 * @property {string} createUserRealName 编制人真实姓名
 * @property {string} deptName 所属部门
 * @property {number} id 主键ID
 * @property {string} joinTime 加入时间
 * @property {string} leadRealName 班组长
 * @property {string} realName 用户姓名
 * @property {string} userName 用户账号
 * @description 考勤项目组成员表页面展示实体
 */
